// 存取器:让我们可以有效的控制对 对象的成员的访问,通过getters 和 setters来进行操作
;(() => {
  class Person {
    // 外部可以传入姓氏的名字数据,同时使用set和get控制姓名的数据,外部也可以进行修改操作

    // 姓名的成员属性(外部可以访问，也可以修改)
    constructor(public firstName: string, public lastName: string) {}
    // 读取器 ---- 负责读取数据的
    get fullName() {
      // 姓名====>姓氏和名字的拼接
      return this.firstName + '_' + this.lastName
    }
    // 设置器 ----负责设置数据的(修改)
    set fullName(value) {
      // 姓名 ---->把姓氏和名字获取到重新的赋值给firstName和lastName
      const nameArr: Array<string> = value.split('_')
      this.firstName = nameArr[0]
      this.lastName = nameArr[1]
    }
  }
  // 实例化对象
  const person = new Person('刘', '柏麟')
  console.log(person)
  // 获取该属性成员属性
  console.log(person.fullName)
  // 设置该属性的数据
  person.fullName = '未容谷雨_泪胭脂'
  console.log(person)
})()
